The technology disclosed relates to decompression of video streams. In particular, gracefully reducing demands for shared decompression resources required to present multiple streams concurrently such that the streaming video content in the multiple streams is concurrently available for further processing or display. The decompression resources may be one or more general purpose CPUs used for unrelated workloads, or specialized decompression resources shared among multiple video streams, or a combination of both.
The use of video streaming for applications such as surveillance and video conferencing has grown significantly as the cost of the hardware has declined and the availability of wireless and wired network connectivity has increased. As a result, the use of multiple video streams has increased, permitting multiple individuals from different physical locations to collaborate and also permitting monitoring from multiple locations to be aggregated at a single destination.
Historically the bottleneck in the process has been the available bandwidth in the communications link between the video source and the destination. Thus, considerable effort has been invested in compressing raw video in order to conserve bandwidth. On the receiving side, given the advances in compression, much effort was initially invested in designing and building faster decoders to decompress incoming video frames. However, as CPU processing power has continued to follow Moore's law and new multi-core architectures have been developed, there has also been a transition from using specialized decoding hardware to using general purpose computers such as those in laptops, desktops and even mobile devices.
The culmination of this trend is that these general purpose computing devices, which are typically running many processes at once, are now being used to decompress and process multiple video streams concurrently. As a result, the processing load in these devices varies widely not only due to the variability of incoming video streams but also due to other processes unrelated to video processing.
Therefore, there is an opportunity to introduce improved management of available decompression resources such that incoming video streams may continue to be concurrently processed or displayed without overloading these resources.